package com.tegtech.core.controller;

import java.beans.PropertyEditorSupport;
import java.util.Date;
import java.util.List;
import java.util.function.Supplier;

import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;

import com.tegtech.common.constant.ErrorMsg;
import com.tegtech.common.domain.Result;
import com.tegtech.common.utils.date.DateUtils;
import com.tegtech.core.page.PageResult;
import com.tegtech.core.page.PageSupport;

import cn.hutool.core.util.StrUtil;

/**
 * web层通用数据处理
 * 
 * @author Jun
 */
public class BaseController {

	/**
	 * 将前台传递过来的日期格式的字符串，自动转化为Date类型
	 */
	@InitBinder
	public void initBinder(WebDataBinder binder) {
		// Date 类型转换
		binder.registerCustomEditor(Date.class, new PropertyEditorSupport() {
			@Override
			public void setAsText(String text) {
				setValue(DateUtils.parseDate(text));
			}
		});
	}
	
	/**
	 * 数据分页
	 * @param supplier
	 * @return
	 */
	protected PageResult buildPageResult(Supplier<List<?>> supplier) {
		PageSupport.startPage();
		return PageSupport.buildPageResult(supplier.get());
	}
	
	/**
	 * 响应返回结果
	 * 
	 * @param rows 影响行数
	 * @return 操作结果
	 */
	protected Result toResult(int rows) {
		return rows > 0 ? Result.ok() : Result.err().msg(ErrorMsg.NO_MODIFIED);
	}

	/**
	 * 页面跳转
	 */
	public String redirect(String url) {
		return StrUtil.format("redirect:{}", url);
	}
}
